/*
 *  IPromptText.cs
 *  
 *  Provides an interface for the controls that support prompt text.
 *  
 *  Copyright (c) 2009, Richard Bao Labs.
 *  
 *  The contents of this file are subject to the Mozilla Public License
 *  Version 1.1 (the "License"); you may not use this file except in
 *  compliance with the License. You may obtain a copy of the License at
 *  
 *  http://www.mozilla.org/MPL/
 *  
 *  Software distributed under the License is distributed on an "AS IS"
 *  basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
 *  the License for the specific language governing rights and limitations
 *  under the License.
 *  
 *  The Original Code is RichControlLibrary.
 *  
 *  The Initial Developer of the Original Code is Richard Bao Labs.
 *  All Rights Reserved.
 */

using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;

namespace RichControlLibrary
{
    /// <summary>
    /// Provides an interface for the controls that support prompt text.
    /// </summary>
    public interface IPromptText
    {
        /// <summary>
        /// Occurs when the <see cref="ValueText"/> property value changes.
        /// </summary>
        event EventHandler ValueTextChanged;

        /// <summary>
        /// Occurs when the <see cref="PromptText"/> property value changes.
        /// </summary>
        event EventHandler PromptTextChanged;

        /// <summary>
        /// Gets or sets the prompt text in the control. Prompt text is used as inline instructions or to
        /// describe what should be typed in or what the values mean.
        /// </summary>
        string PromptText { get; set; }

        /// <summary>
        /// Gets or sets the value text in the text box. Value text is the actual user input rather than
        /// the current display text.
        /// </summary>
        string ValueText { get; set; }

        /// <summary>
        /// Gets or sets the foreground color of the prompt text. It is set to 
        /// <see cref="SystemColors.GrayText"/> by default.
        /// </summary>
        Color PromptForeColor { get; set; }

        /// <summary>
        /// Gets or sets a <see cref="System.Boolean"/> value that indicates whether the prompt text is 
        /// displayed in italic.
        /// </summary>
        bool ShowPromptInItalic { get; set; }

        /// <summary>
        /// Gets a <see cref="System.Boolean"/> value that indicates whether the prompt text is being 
        /// displayed.
        /// </summary>
        bool IsPromptDisplaying { get; }
    }
}
